#include <my_header.h>
#if 0
虽然我们在 a 函数中创建了一个线程来修改栈变量 num，这是一个潜在的数据竞争，
因为 num 是在 main 函数的栈上分配的。子线程和主线程共享同一个栈，
但主线程在 a 函数返回后（a函数已终止），子线程首次打印会出现随机数，
因为栈中a函数已销毁，num的复制自然而然也没有了，再次赋值num将成为一个新变量，
将不再能安全地访问 num，这可能导致未定义的行为。

#endif
/* Usage: ./6_shared_stack2 */
// 两个线程访问栈上数据

void * func(void *p){
    int *num = (int *)p;

    printf("son num: %d \n", *num);
    *num = 11;
    printf("son num: %d sS\n", *num);

    return NULL;
}

void a(){
    int num = 10;

    pthread_t son_id;
    int ret = pthread_create(&son_id, NULL, func, &num);
    THREAD_ERROR_CHECK(ret, "pthread_create");
}
int main(){
    // 调用a函数
    a();

    sleep(2);

    return 0;
}

